########################################################################################
@CLASS
Data
########################################################################################

########################################################################################
@init[]
########################################################################################


########################################################################################



########################################################################################
@query[sQuery][sQuery]
########################################################################################

^connect[mysql://jettykid:perviinah@mysql.bhost.ru/$self.database]{
	^void:sql{ SET NAMES utf8 }
	$result[ $sQuery ]
}

########################################################################################



########################################################################################
@dictionary[sTable;h][sTable;h;result]
########################################################################################

$result[^table::sql{
	SELECT id, name
	FROM $sTable
	^if(def $h.where){ WHERE $h.where }
	^if( def $h.order ){ ORDER BY $h.order }{ ORDER BY name }
}]

########################################################################################



########################################################################################
@table[sQuery][sQuery;result]
########################################################################################

$self.log[$sQuery]
$result[^table::sql{$sQuery}]

########################################################################################



########################################################################################
@exist[sTable;sCondition][sTable;sCondition]
########################################################################################

$self.duplicate(^int:sql{ SELECT id FROM $sTable WHERE $sCondition LIMIT 1 }[ $.default(0) ])
$result($self.duplicate)

########################################################################################



########################################################################################
@delete[h][h]
########################################################################################

$self.log[ DELETE FROM $h.from WHERE $h.where]
^void:sql{ $self.log }

########################################################################################



########################################################################################
@insert[sTable;h][sTable;h]
########################################################################################

$t[^table::sql{ DESCRIBE $sTable }]
$self.log[
	INSERT INTO $sTable
	( ^t.menu{ $t.Field }[,] )
	VALUES
	( ^t.menu{ ^if( def $h.default.[$t.Field] ){ '$h.default.[$t.Field]' }{ '$form:[$t.Field]' } }[,] )
	^if( def $h.where ){ WHERE $h.where }
]
^void:sql{ $self.log }
$self.latestId(^int:sql{ SELECT LAST_INSERT_ID() })

########################################################################################



########################################################################################
@update[sTable;h][sTable;h]
########################################################################################

$t[^table::sql{ DESCRIBE $sTable }]
$self.log[
	UPDATE $sTable
	SET
		^t.menu{
			^if( def $h.default.[$t.Field] || def $form:[$t.Field] ){
				$t.Field = ^if( def $h.default.[$t.Field] ){ '$h.default.[$t.Field]' }{ '$form:[$t.Field]' } ,
			}
		}
		id = id
	WHERE $h.where	
]
^void:sql{ $self.log }

########################################################################################



########################################################################################
@truncate[sTable][sTable]
########################################################################################

$self.log[ TRUNCATE $sTable]
^void:sql{ $self.log }

########################################################################################



########################################################################################
@filter[h][h;t]
########################################################################################

$t[^table::sql{ DESCRIBE $h.from }]
$self.log[
	SELECT $h.select
	FROM $h.from
	WHERE 
		^t.menu{
			^if( $h.where is hash && def $h.where.[$t.Field] ){ $h.where.[$t.Field] AND }{
				^if( def $form:[$t.Field] && $form:[$t.Field] != 0 ){ $t.Field = '$form:[$t.Field]' AND }
			}
		}
		id = id
	^if( def $h.order ){ ORDER BY $h.order }
	^if( def $h.limit ){ LIMIT $h.limit }
]
$result[^table::sql{ $self.log }]

########################################################################################



########################################################################################